import 'package:dartx/dartx.dart';
import 'package:get/get.dart';
import 'package:get/get_common/get_reset.dart';
import 'package:sgy_flutter/ble/ext.dart';

enum SgyCMD {
  //DLS和脚踏
  //数据上传
  //（DLS_L有效）
  dataUpload([0xB8, 0x00]),
  //老的DLS
  //数据上传
  //（DLS_L有效）
  oldDlsDataUpload([0xB7, 0x00]),
  //    数据上传开关
  dataUploadToggle([0xBD, 0x00]),
//    获取比例因子调整
  getScaleFactor([0xB6, 0x00]),
  //获取倒链归零
  getDLGL([0x21, 0x00]),
  //设置倒链归零
  setDLGL([0x20, 0x00]),
  //打开运输模式
  openYSMS([0x22, 0x00]),
  //获取异常零点
  getYCLD([0x23, 0x00]),
//    设置比例因子调整
  setScaleFactor([0xB6, 0x00]),
  //获取双边配对状态
  //（DLS_L有效）
  getPairState([0xA1, 0x00]),
  /**
   *    开始双边配对（DLS_L有效
   *    01(双边->单边)
   *    02(单边->双边)
   */
  setPairState([0xA0, 0x00]),
  //零点校准
  zeroAdjust([0xB4, 0x00]),
  //零点校准历史记录
  getZeroAdjustRecord([0xB5, 0x00]),
  //比例因子
  ratioFactor([0xB3, 0x00]),
  //重置比例因子
  resetRatioFactor([0xB2, 0x00]),
  //传感器类型
  // 01(加速度计)
  //02（陀螺仪）
  getSensor([0xBA, 0x00]),
  setSensor([0xBB, 0x00]),
  //OTA准备指令
  prepareOTA([0xB1, 0x00]),

  /**
   * 获取设备状态
   */
  getDeviceState([0xBC, 0x00]),

  /**
   * 获取力矩数据
   */
  getTorqueData([0xED, 0x00]),

  /**
   * 获取传感器数据
   */
  getSensorData([0xA2, 0x00]),
  fixHitch([0xE4, 0x00]),
  fixHitchResp([0xE3, 0x00]),
  unknow([0xFF, 0xFF]),
  ;

  final List<int> array;

  const SgyCMD(this.array);

  factory SgyCMD.from(List<int> array) {
    final target =
        SgyCMD.values.firstWhereOrNull((test) => test.array.contentEquals(array));
    if (target != null) {
      return target;
    } else {
      return SgyCMD.unknow;
    }
  }
}
